//package com.listeningframework.boot.codegen.database;
//
//import java.sql.Connection;
//import java.sql.DriverManager;
//import java.sql.ResultSet;
//import java.sql.SQLException;
//import java.sql.Statement;
//import java.util.List;
//
//import com.listeningframework.boot.codegen.CodeGenConfiguration;
//import com.listeningframework.boot.codegen.context.MetaData;
//import com.listeningframework.boot.codegen.context.SystemContext;
//import com.listeningframework.boot.codegen.exception.BusinessException;
//
///**
// *
// * CodeGen Entity MetaData Loader
// *
// * @author Listening
// * @version $Id: MetaLoader.java, v 0.1 2016年12月4日 下午5:39:03 Listening Exp $
// */
//public abstract class MetaLoader {
//
//    /**
//     * 执行脚本查詢
//     *
//     * @param table 要读取的表名称
//     * @return List<MetaData>
//     * @throws BusinessException
//     */
//    protected List<MetaData> execute(String table) throws BusinessException {
//        Connection conn = null;
//        Statement stat = null;
//        ResultSet rs = null;
//        try {
//            String url = getURL();
//            String username = getUsername();
//            String password = getPassword();
//            Class.forName(getDriver());
//            conn = DriverManager.getConnection(url, username, password);
//            stat = conn.createStatement();
//            rs = stat.executeQuery(getMetaSQL(table));
//            return getMetaData(rs);
//        } catch (ClassNotFoundException e) {
//            throw new BusinessException("数据库驱动不存在", e);
//        } catch (SQLException e) {
//            throw new BusinessException("JDBC异常", e);
//        } finally {
//            try {
//                if (rs != null) {
//                    rs.close();
//                }
//                if (stat != null) {
//                    stat.close();
//                }
//                if (conn != null) {
//                    conn.close();
//                }
//            } catch (Exception e) {
//                throw new BusinessException("释放资源异常", e);
//            }
//        }
//    }
//
//    /**
//     * 查询MetaData结构的SQL语句
//     *
//     * @param table 表名称
//     * @return String
//     */
//    protected abstract String getMetaSQL(String table);
//
//    /**
//     * 回调处理表结果MetaData查询结果
//     *
//     * @param rs 结果集
//     * @return List<MetaData>
//     * @throws SQLException
//     */
//    protected abstract List<MetaData> getMetaData(ResultSet rs) throws SQLException;
//
//    /**
//     * 查询表MetaData结构List
//     *
//     * @param table 要获取MetData的表名称
//     * @return List<MetaData>
//     * @throws BusinessException
//     */
//    public List<MetaData> getMetaData(String table) throws BusinessException {
//        return execute(table);
//    }
//
//    /**
//     * Get Driver Class
//     */
//    protected abstract String getDriver();
//
//    /**
//     * Get JDBC URL
//     */
//    protected abstract String getURL();
//
//    /**
//     * CodeGen全局Config查询
//     *
//     * @return CodeGenConfiguration
//     */
//    protected CodeGenConfiguration getCodeGenConfig() {
//        return SystemContext.getCodeGenConfig();
//    }
//
//    /**
//     * 数据库HOST
//     *
//     * @return String
//     */
//    protected String getHost() {
//        return getCodeGenConfig().host();
//    }
//
//    /**
//     * 数据库端口
//     *
//     * @return int
//     */
//    protected int getPort() {
//        return getCodeGenConfig().port();
//    }
//
//    /**
//     * 数据库名称
//     *
//     * @return String
//     */
//    protected String getDataBase() {
//        return getCodeGenConfig().name();
//    }
//
//    /**
//     * 数据库帐号
//     *
//     * @return String
//     */
//    protected String getUsername() {
//        return getCodeGenConfig().username();
//    }
//
//    /**
//     * 数据库密码
//     *
//     * @return String
//     */
//    protected String getPassword() {
//        return getCodeGenConfig().password();
//    }
//
//}
